 public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @param m int整型
     * @param n int整型
     * @return ListNode类
     */
    public ListNode reverseBetween (ListNode head, int m, int n) {

        ListNode dummary=new ListNode(0);

        dummary.next=head;

        ListNode pre=dummary;
        ListNode cur=head;

        for(int i=1;i<m;i++){
            pre=pre.next;
            cur=cur.next;
            //跳出循环时刚好走到n位置
        }

        //反转从m位置开始的n-m个结点
        for(int i=0;i<n-m;i++){

            //保存3
            ListNode temp=cur.next;
            //2->4
            cur.next=cur.next.next;
            //3指向2
            temp.next=pre.next;
            //1指向3
            pre.next=temp;

        }
        //返回头结点
        return dummary.next;

    }
}